package com.lbh.cloudgallery.service.impl;

import com.lbh.cloudgallery.entity.CartItemEntity;
import com.lbh.cloudgallery.entity.MuseumEntity;
import com.lbh.cloudgallery.entity.vo.CartItemVo;
import com.lbh.cloudgallery.service.CartItemService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xxx.common.utils.PageUtils;
import com.xxx.common.utils.Query;

import com.lbh.cloudgallery.dao.CartDao;
import com.lbh.cloudgallery.entity.CartEntity;
import com.lbh.cloudgallery.service.CartService;


@Service("cartService")
public class CartServiceImpl extends ServiceImpl<CartDao, CartEntity> implements CartService {

    @Autowired
    private CartItemService cartItemService;
    @Override
    public PageUtils queryPage(Map<String, Object> params) {

        QueryWrapper<CartEntity> wrapper = new QueryWrapper<>();
        String key = (String) params.get("key");
        if (!StringUtils.isEmpty(key)){
            wrapper.eq("id",key)
                    .eq("member_id",key);
        }
        IPage<CartEntity> page = this.page(
                new Query<CartEntity>().getPage(params),
                wrapper
        );

        return new PageUtils(page);
    }

    @Override
    public CartItemEntity  addCart(CartItemVo vo) {

        //根据memberId找到相应的购物车
        CartEntity cartEntity = this.baseMapper
                .selectOne(new QueryWrapper<CartEntity>().eq("member_id", vo.getMemberId()));

        //获取购物车的id
        Long cartId = cartEntity.getId();

        //根据购物车的id和productId查询（购物项是否已有）
        CartItemEntity cartItemEntity = cartItemService.getOne(new QueryWrapper<CartItemEntity>()
                 .eq("cart_id", cartId).eq("product_id", vo.getProductId()));

         //此物品是否已加购
         if(cartItemEntity==null){
                 //若未加购，则生成一条购物项数据
             CartItemEntity cartItemEntity1 = new CartItemEntity();
             cartItemEntity1.setCartId(cartId);
             cartItemEntity1.setProductId(vo.getProductId());
             cartItemEntity1.setProductImage(vo.getImage());
             cartItemEntity1.setMemberId(vo.getMemberId());
             cartItemEntity1.setCount(vo.getCount());
             cartItemEntity1.setItemTotalPrice(vo.getItemTotalPrice());
             cartItemEntity1.setProductName(vo.getProductName());
             cartItemService.save(cartItemEntity1);

             return cartItemEntity1;
         }

         //若已加购，则更新购物项数据
         else{
             cartItemEntity.setCount(cartItemEntity.getCount()+vo.getCount());
             cartItemEntity.setItemTotalPrice(cartItemEntity.getItemTotalPrice()+vo.getItemTotalPrice());
             cartItemService.updateById(cartItemEntity);
             return cartItemEntity;
         }
    }

}